/**
 * FileName: PollingUtils
 * Author: Administrator
 * Date: 2020/12/15 0015 14:15
 * Description:
 */
package com.linkage.linkedlife.utils;

import android.app.AlarmManager;
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import android.os.SystemClock;

/**
 * @ClassName: PollingUtils
 * @Description: java类作用描述
 * @Author: Clark
 * @Date: 2020/12/15 0015 14:15
 *   在活动的开始和销毁的地方调用轮询的方法
 *   PollingUtils.startPollingService(this, 5, PollingService.class, PollingService.ACTION);
 *   PollingUtils.stopPollingService(this, PollingService.class, PollingService.ACTION);
 */



public class PollingUtils {
    // 开启轮询服务
    public static void startPollingService(Context context, int seconds,
                                           Class<?> cls, String action) {
        // 获取AlarmManager系统服务
        AlarmManager manager = (AlarmManager) context
                .getSystemService(Context.ALARM_SERVICE);

        // 包装需要执行Service的Intent
        Intent intent = new Intent(context, cls);
        intent.setAction(action);
        PendingIntent pendingIntent = PendingIntent.getService(context, 0,
                intent, PendingIntent.FLAG_UPDATE_CURRENT);

        // 触发服务的起始时间
        long triggerAtTime = SystemClock.elapsedRealtime();

        //使用AlarmManger的setRepeating方法设置定期执行的时间间隔（seconds秒）和需要执行的Service
        manager.setRepeating(AlarmManager.ELAPSED_REALTIME, triggerAtTime,
                seconds * 1000, pendingIntent);
    }

    // 停止轮询服务
    public static void stopPollingService(Context context, Class<?> cls,
                                          String action) {
        AlarmManager manager = (AlarmManager) context
                .getSystemService(Context.ALARM_SERVICE);
        Intent intent = new Intent(context, cls);
        intent.setAction(action);
        PendingIntent pendingIntent = PendingIntent.getService(context, 0,
                intent, PendingIntent.FLAG_UPDATE_CURRENT);
        //取消正在执行的服务
        manager.cancel(pendingIntent);
    }
}